from meiduo_mall.libs.yuntongxun.sms import CCP
from .constants import SMS_CODE_EXPIRES
from celery_tasks.main import app


# bind：保证task对象会作为第一个参数自动传入
# name：异步任务别名
# retry_backoff：异常自动重试的时间间隔 第n次 (retry_backoff×2^(n-1))s   1,3;2,6;3,12
# max_retries：异常自动重试次数的上限
@app.task(bind=True, name='send_sms', retry_backoff=3)
def send_sms(self, mobile, sms_code):
    # 并通过第三方给手机发短信
    ccp = CCP()
    # # 注意： 测试的短信模板编号为1
    print("测试开始！")
    try:
        ret = ccp.send_template_sms(mobile, [sms_code, SMS_CODE_EXPIRES], 2)
    except Exception as e:
        # 有异常自动重试三次
        raise self.retry(exc=e, max_retries=3)
    if ret != 0:
        raise self.retry(exc=Exception('发送短信失败'), max_retries=3)
    return ret
